Digital signal compression is widely used in many multimedia applications and devices. Digital signal compression using a coder/decoder (codec) allows streaming media, such as audio or video signals to be transmitted over the Internet or stored on compact discs. A number of different standards of digital video compression have emerged, including H.261, H.263; MPEG-1, MPEG-2, MPEG-4; and AVC (H.264). These standards, as well as other video compression technologies, seek to efficiently represent a video frame picture by eliminating the spatial and temporal redundancies in the picture and among successive pictures. Through the use of such compression standards, video contents can be carried in highly compressed video bit streams, and thus efficiently stored in disks or transmitted over networks.
Unfortunately, the storage media and networks are not always reliable, so that errors may occur during storage or transmission. Thus, some video stream data may be corrupted, which may result in termination of decoding/playing; or, if the decoding continues, some damaged picture frames or partial frames. Such errors may propagate to the following pictures, due to the predictive nature of video compression. Overall, errors result in poor video playback; therefore, they need to be properly handled in order to mitigate their impact.
MPEG-4 AVC (Advanced Video Coding), also known as H.264, is a video compression standard that offers significantly greater compression than its predecessors. The H.264 standard is expected to offer up to twice the compression of the earlier MPEG-2 standard. The H.264 standard is also expected to offer improvements in perceptual quality. As a result, more and more video content is being delivered in the form of AVC(H.264)-coded streams. Two rival DVD formats, the HD-DVD format and the Blu-Ray Disc format support H.264/AVC High Profile decoding as a mandatory player feature. AVC(H.264) coding is described in detail in “Draft of Version 4 of H.264/AVC (ITU-T Recommendation H.264 and ISO/IEC 14496-10 (MPEG-4 part 10) Advanced Video Coding)” by Gary Sullivan, Thomas Wiegand and Ajay Luthra, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6), 14th Meeting: Hong Kong, CH 18-21 January, 2005, the entire contents of which are incorporated herein by reference for all purposes.
Errors in video streams may be categorized into two types: fatal errors and non-fatal errors. Fatal errors usually come from incorrect header syntax, such as syntax elements in block, macroblock, slice, picture and sequence headers. Non-fatal errors, by contrast, mostly exist in the data part, such as incorrect motion vector and coefficient values. A standard (e.g. MPEG-1/2/4, H.261/3/4, etc.) decoder without embedded error handling mechanism is fragile. When it encounters a fatal error, the decoder usually asserts from decoding and the display stops or freezes as a result. If the error is non-fatal, the decoder may continue decoding through the error data; however, the display may be corrupted with annoying visual artifacts.
In order to protect video stream data from errors, some conventional error detection and correction methods have been applied to standard video coders. For example, parity, checksum, cyclic redundancy check (CRC), vertical redundancy check, horizontal redundancy check and rectangular redundancy check are varieties of error-checking mechanisms; forward error correction (FEC) and automatic repeat request (ARQ) are two ways to correct found errors. These methods can provide some degree of error detection and correction by inserting redundant bits into the video stream. Since they were originally designed for general file transfer over networks, they do not utilize natural video characteristics, such as high content correlations in one picture and among successive pictures; and thus, they are not very efficient solutions for handling video errors. Furthermore, errors can happen anywhere in a video stream, both in syntax and in residue data, and can affect both large and small chunks of data. It can be very costly or impractical to protect against and correct these errors using conventional methods such as CRC and FEC.
Therefore, there is the need for “high level” error handling system and methods, which take advantages of video characteristics and thus detect and conceal video errors more efficiently. This invention provides the system and methods for efficient error detecting and handling in such a multi-threaded decoding infrastructure.